﻿using drawing_print.configure;
using drawing_print.util;
using iTextSharp.text;
using iTextSharp.text.pdf;
using Microsoft.Win32;
using Spire.Pdf;
using System;
using System.Drawing;
using System.Drawing.Printing;
using System.IO;
using System.Windows.Forms;

namespace drawing_print.comm
{
    class FileConver
    {


        //public FileConver(string url, string fileType)
        //{
        //    init(url, fileType.ToLower());
        //}

        public bool init(string url, string fileType)
        {
            // 文件路径
            string downloadFile = Path.Combine(AppConfig.FiliPath, "SourceFile" + fileType);
            // 下载文件路径
            AppConfig.SourceFilePath = downloadFile;
            // 下载文件扩展名
            AppConfig.FileExtension = fileType;
            // 下载文件
            if (!Download.download(url, AppConfig.SourceFilePath))
            {
                MessageBox.Show("文件下载失败。");
                AppConfig.isWork = false;
                return false;
            }
            else
            {

                return allToPdf(AppConfig.SourceFilePath, AppConfig.TargetFilePath);// 转换文件
            }
        }

        public static bool allToPdf(string sourcePath, string outPath)
        {
            if (".pdf".Equals(AppConfig.FileExtension))
            {
                File.Copy(sourcePath, outPath);
                return true;
            }
            if (Images.isSupport(AppConfig.FileExtension))
            {
                Images.imageToPdf(sourcePath, outPath);
                return true;
            }
            if (drawing_print.util.Office.isSupport(AppConfig.FileExtension))
            {
                bool res = false;

                try
                {
                    res = drawing_print.util.Wps.wpsToPdf(sourcePath, outPath, AppConfig.FileExtension);
                    if (res)
                    {
                        return res;
                    }
                }
                catch
                {
                    AppConfig.log.log("--------WPS调用失败。--------");
                }

                if (!res)
                {
                    try
                    {
                        res = drawing_print.util.Office.officeToPdf(sourcePath, outPath, AppConfig.FileExtension);
                        if (res)
                        {
                            return res;
                        }
                    }
                    catch
                    {
                        AppConfig.log.log("--------Office调用失败。--------");
                    }
                }
            }
            if (Texts.isSupport(AppConfig.FileExtension))
            {
                Texts.textToPdf(sourcePath, outPath);
                return true;
            }
            return false;
        }

        /// <summary>
        /// 检查是否是支持的文件
        /// </summary>
        /// <returns></returns>
        public static bool isSupport(string fileExtension)
        {

            // office 全家桶的验证
            if (util.Office.isSupport(fileExtension))
            {
                return true;
            }
            // 图片的验证
            else if (Images.isSupport(fileExtension))
            {
                return true;
            }
            else if (Texts.isSupport(fileExtension))
            {
                return true;
            }
            else if (".pdf".Equals(fileExtension))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}
